package cn.bird.storm.component.jackson.annotation;

import cn.bird.storm.component.jackson.serialize.StringNumCustomizeSerialize;
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.math.RoundingMode;

/**
 * bigDecimal自定义序列化注解
 */
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotationsInside
@JsonSerialize(using = StringNumCustomizeSerialize.class)
@Target(ElementType.FIELD)
public @interface StringNumSerializeAnnotation {

    /**
     * 是否要处理小数位
     */
    boolean handleScale() default false;
    /**
     * 保留小数位数 默认2位
     * 要处理小数位的时候才会执行
     */
    int scale() default 2;
    /**
     * 结果后置符号
     */
    String afterSymbol() default "";
    /**
     * 结果前置符号
     */
    String beforeSymbol() default "";
    /**
     * 多余小数省略策略
     */
    RoundingMode roundingMode() default RoundingMode.UP;
    /**
     * 结果要乘以某数
     */
    String multiply() default "";
    /**
     * 结果除以某数
     */
    String divide() default "";

}
